﻿
namespace SharpTag.ID3
{
    /// <summary>
    /// Represents an abstract factory used to generate different types of <see cref="IFrameHeader"/> objects in ID3v2Tags.
    /// </summary>
    public abstract class AbstractFrameHeaderFactory
    {
        /// <summary>
        /// Creates a new empty <see cref="IFrameHeader"/> object.
        /// </summary>
        /// <returns>A new empty <see cref="IFrameHeader"/> object.</returns>
        public abstract IFrameHeader CreateFrameHeader();

        /// <summary>
        /// Creates a new populated <see cref="IFrameHeader"/> object.
        /// </summary>
        /// <param name="frameBytes">Raw frame byte array to be parsed into a new <see cref="IFrameHeader"/> object.</param>
        /// <returns>A new populated <see cref="IFrameHeader"/> object.</returns>
        public abstract IFrameHeader GetFrameHeader(byte[] frameBytes);
    }
}
